package com.cx.base.utils;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * log信息工具类
 * @author cenxi
 */
public class LogInfoUtil{

	private static Map<String,Log> logPools = new HashMap<String,Log>();
	
	/**
	 * 在Log对象池中取日志对象，如果不存在则新建
	 * @param clazz
	 * @return
	 */
	public static Log getLog(Class clazz) {
		Log log = logPools.get(clazz.getName());
		if (log == null) {
			log = LogFactory.getLog(clazz);
			logPools.put(clazz.getName(), log);
		}
		return log;
	}
	
	/**
	 * 日志格式化
	 * */
	private static String getInfoMsg(String key,String msg){
		String infoMsg;
		infoMsg = "{\"key\":\"" + key + "\",\"msg\":\"" + msg + "\"}";
		return infoMsg;
	}
	
	/**
	 * 记录debug级别的日志
	 * 
	 * @param clazz
	 * @param key 信息精简描述
	 * @param msg 信息详细描述
	 */
	public static void debug(Class clazz, String key, String msg) {
		Log log = getLog(clazz);
		String infoMsg = getInfoMsg(key, msg);
		log.debug(infoMsg);
	}
	
	/**
	 * 记录INFO级别的日志
	 * 
	 * @param clazz
	 * @param key 信息精简描述
	 * @param msg 信息详细描述
	 */
	public static void info(Class clazz, String key, String msg) {
		Log log = getLog(clazz);
		String infoMsg = getInfoMsg(key, msg);
		log.info(infoMsg);
	}
	
	/**
	 * 记录WARN级别的日志
	 * 
	 * @param clazz
	 * @param key 信息精简描述
	 * @param msg 信息详细描述
	 */
	public static void warn(Class clazz, String key, String msg) {
		Log log = getLog(clazz);
		String infoMsg = getInfoMsg(key, msg);
		log.warn(infoMsg);
	}
	
	/**
	 * 记录error级别的日志
	 * 
	 * @param clazz
	 * @param key 信息精简描述
	 * @param msg 信息详细描述
	 * @param e
	 */
	public static void error(Class clazz, String key, String msg,Exception e) {
		e.printStackTrace();
		Log log = getLog(clazz);
		String infoMsg = getInfoMsg(key, msg);
		log.error(infoMsg);
	}
}
